-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tentative support for primary-system-name. #9
base: master
Are you sure you want to change the base?
Conversation
If you explain me how to test, I can do the testing of my own patch. Software that use / in explicit secondary systems will work just as well in ASDF2 as software that use names without / as a secondary system, except they won't confuse ASDF as much as to where to find the system if it hasn't been defined yet, for ASDF3 will know where to look. LIL can't work with ASDF 2.26 or older; it relies on the package-system extension, that requires ASDF 3 (I briefly tried to make asdf-package-system work with ASDF 2 as well as 3, but it was too much work for still incomplete compatibility, because ASDF 2 is so broken). As a comment in #8 you say: "The slashed system magic breaks the system installation database of Quicklisp." "Fixing it isn't just a matter of making the current client work. It must be made easy to go back to previous versions of the client and previous versions of ASDF to make sure that previous software dists remain loadable." "That represents a few days of thinking and new work. I'd rather not get it as an untested patch from an outside source." How is the slashed system magic breaking the database? Do you mean, you want a list of all secondary systems being defined in a .asd file, and not just the primary one? Or you need the system granularity to avoid circularities that appear if each system name is replaced by its primary-system-name? Then indeed, you must record the names of all secondary systems, and teach quicklisp-client about the fact that it should look things up by primary-system-name, which implies it using ASDF3. :-/ |
This seems to result in a dist that goes into an infinite loop when computing the load strategy for lil. |
What I feared. In this case, where the circularity is all within a same primary system name, so the controller can probably omit the self-reference with a (remove current-primary-name ...). Where there would be mutual dependencies across primary-names, the client would have to know to detect and break circularities. |
There's something more fundamentally wrong with these changes. It's reporting the wrong dependency relationships for e.g. anaphora, where the deps for anaphora-test are ending up as dependencies for anaphora. I'm not sure why. |
Interesting. anaphora-test is a secondary system defined in anaphora.asd. It looks like the fact that the defsystem hook uses setf direct-dependencies means that the last system in the file gets to set the dependencies for all systems in the file, which is a bug. I refactored that hook, but I'm surprised that the refactoring should change this part of the behavior. Maybe the solution is to store the information in a hash-table indexed by coerce-name instead of a simple variable? |
OK, new tentative patch for #7
that supersedes #8
There was an infinite loop because I was calling normalize-dependency on dependencies before the system definition was properly initialized. That was bad. This version accumulates dependencies, then normalizes at the end. Should work better. Once, again, untested (except this time I checked that it compiles.)